package com.shuda.business.user.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.shuda.common.core.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;

/**
 * 租户实体类，映射表`sys_tenant`。
 *
 * 说明：
 * - 继承公共实体基类，包含审计字段（创建人、创建时间、更新人、更新时间、删除标志）。
 * - 明确声明主键id，避免在业务代码中无法获取主键导致的编译问题。
 * - 显式提供所有字段的getter/setter，避免因Lombok处理异常导致的方法缺失。
 *
 * @author ink
 * @date 2025-11-09 10:00
 */
@TableName("sys_tenant")
@Schema(description = "租户实体")
public class TenantEntity extends BaseEntity {

    @TableId(value = "id", type = IdType.AUTO)
    @Schema(description = "主键ID")
    private Long id;

    @Schema(description = "租户名称")
    private String tenantName;

    @Schema(description = "租户编码")
    private String tenantCode;

    @Schema(description = "租户状态（0正常 1停用）")
    private String status;

    @Schema(description = "联系人")
    private String contactPerson;

    @Schema(description = "联系电话")
    private String contactPhone;

    @Schema(description = "联系邮箱")
    private String contactEmail;

    @Schema(description = "租户配置")
    private String configJson;

    @Schema(description = "最大用户数")
    private Integer maxUsers;

    @Schema(description = "最大客户数")
    private Integer maxCustomers;

    @Schema(description = "最大渠道数")
    private Integer maxChannels;

    @Schema(description = "最大方案数")
    private Integer maxSchemes;

    @Schema(description = "备注")
    private String remark;

    /**
     * 获取主键ID
     * @return 主键ID
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置主键ID
     * @param id 主键ID
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取租户名称
     * @return 租户名称
     */
    public String getTenantName() {
        return tenantName;
    }

    /**
     * 设置租户名称
     * @param tenantName 租户名称
     */
    public void setTenantName(String tenantName) {
        this.tenantName = tenantName;
    }

    /**
     * 获取租户编码
     * @return 租户编码
     */
    public String getTenantCode() {
        return tenantCode;
    }

    /**
     * 设置租户编码
     * @param tenantCode 租户编码
     */
    public void setTenantCode(String tenantCode) {
        this.tenantCode = tenantCode;
    }

    /**
     * 获取租户状态
     * @return 租户状态（0正常 1停用）
     */
    public String getStatus() {
        return status;
    }

    /**
     * 设置租户状态
     * @param status 租户状态（0正常 1停用）
     */
    public void setStatus(String status) {
        this.status = status;
    }

    /**
     * 获取联系人
     * @return 联系人
     */
    public String getContactPerson() {
        return contactPerson;
    }

    /**
     * 设置联系人
     * @param contactPerson 联系人
     */
    public void setContactPerson(String contactPerson) {
        this.contactPerson = contactPerson;
    }

    /**
     * 获取联系电话
     * @return 联系电话
     */
    public String getContactPhone() {
        return contactPhone;
    }

    /**
     * 设置联系电话
     * @param contactPhone 联系电话
     */
    public void setContactPhone(String contactPhone) {
        this.contactPhone = contactPhone;
    }

    /**
     * 获取联系邮箱
     * @return 联系邮箱
     */
    public String getContactEmail() {
        return contactEmail;
    }

    /**
     * 设置联系邮箱
     * @param contactEmail 联系邮箱
     */
    public void setContactEmail(String contactEmail) {
        this.contactEmail = contactEmail;
    }

    /**
     * 获取租户配置
     * @return 租户配置JSON
     */
    public String getConfigJson() {
        return configJson;
    }

    /**
     * 设置租户配置
     * @param configJson 租户配置JSON
     */
    public void setConfigJson(String configJson) {
        this.configJson = configJson;
    }

    /**
     * 获取最大用户数
     * @return 最大用户数
     */
    public Integer getMaxUsers() {
        return maxUsers;
    }

    /**
     * 设置最大用户数
     * @param maxUsers 最大用户数
     */
    public void setMaxUsers(Integer maxUsers) {
        this.maxUsers = maxUsers;
    }

    /**
     * 获取最大客户数
     * @return 最大客户数
     */
    public Integer getMaxCustomers() {
        return maxCustomers;
    }

    /**
     * 设置最大客户数
     * @param maxCustomers 最大客户数
     */
    public void setMaxCustomers(Integer maxCustomers) {
        this.maxCustomers = maxCustomers;
    }

    /**
     * 获取最大渠道数
     * @return 最大渠道数
     */
    public Integer getMaxChannels() {
        return maxChannels;
    }

    /**
     * 设置最大渠道数
     * @param maxChannels 最大渠道数
     */
    public void setMaxChannels(Integer maxChannels) {
        this.maxChannels = maxChannels;
    }

    /**
     * 获取最大方案数
     * @return 最大方案数
     */
    public Integer getMaxSchemes() {
        return maxSchemes;
    }

    /**
     * 设置最大方案数
     * @param maxSchemes 最大方案数
     */
    public void setMaxSchemes(Integer maxSchemes) {
        this.maxSchemes = maxSchemes;
    }

    /**
     * 获取备注
     * @return 备注
     */
    public String getRemark() {
        return remark;
    }

    /**
     * 设置备注
     * @param remark 备注
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }
}